package core.api.offer;

import jade.util.Logger;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.Hashtable;

import core.datamodel.AccountData;
import core.datamodel.Constants;
import core.datamodel.Element;
import core.datamodel.ResourceCounter;
import core.datamodel.ElementValue;
import core.datamodel.Resource;

public class OfferConsumo extends OfferDefinition {
	Logger log = Logger.getJADELogger(this.getClass().getName());


	public OfferConsumo() {
		super("PAYPERUSE");
	}

	/**
	 * AccounData e' composto da una lista di elementValue che sono i cartellini di costo per ogni singolo elemento
	 * oggetto di monitoraggio + dei counter associati alle risorse per variabili globali
	 */

	public AccountData calculate(Resource  resource, Date  startTime ,long interval) {
		log.info("Richiesto il calcolo della offerta per il timestamp " + startTime);
		AccountData account = null;
		
		if (resource.getResourceType().equals(Constants.RESOURCE_TYPE_VIRTUAL_MACHINE)){
			log.info("Richiesto il calcolo per VirtualMachine a Consumo" + startTime);
			OfferVirtualMachine offer = new OfferVirtualMachine(false);
			account = offer.calculate(resource, startTime, interval);
		
		} else 	if (resource.getResourceType().equals(Constants.RESOURCE_TYPE_VLAN)){
			log.info("Richiesto il calcolo per Vlan a Consumo" + startTime);
			OfferVlan offer = new OfferVlan(false);
			account = offer.calculate(resource, startTime, interval);
		}

		return account;
	}
	@Override
	public boolean isUsageRequired() {
		// TODO Auto-generated method stub
		return true;
	}
	@Override
	public boolean isEventRequired() {
		// TODO Auto-generated method stub
		return true;
	}


}
